package com.hsnn.medstgmini.trading.pur.service.impl;

import java.util.List;
import java.util.Map;

import javax.transaction.Transactional;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.hsnn.medstgmini.base.dict.dao.DicAreaDao;
import com.hsnn.medstgmini.base.dict.model.form.DicAreaForm;
import com.hsnn.medstgmini.trading.pur.dao.PurConfigDao;
import com.hsnn.medstgmini.trading.pur.model.PurConfig;
import com.hsnn.medstgmini.trading.pur.service.PurConfigManager;
import com.hsnn.medstgmini.util.Pagination;
import com.hsnn.medstgmini.validator.ValidatorUtil;

/**
 * @category 采购设置
 * @author 蔡春龙
 * @date 2015年6月14日
 */
@Service
public class PurConfigManagerImpl implements PurConfigManager {

	@Autowired
	private PurConfigDao purConfigDao;
	@Autowired
	private DicAreaDao areaDao;

	/**
	 * @category 查询采购设置列表
	 * @date 2015年7月7日
	 * @return
	 */
	public List<PurConfig> getPurConfigList() {
		List<PurConfig> list =  purConfigDao.getPurConfigLists();
		if (null != list && list.size() > 0){
			for (int i = 0; i < list.size(); i++){
				PurConfig data = list.get(i);
				String configRemark = data.getConfigRemark();
				String[] str = configRemark.split("&&");
				data.setConfigRemmarkOne(str[0]);
				data.setConfigRemark("");
				if (str.length > 1){
					data.setConfigRemark(str[1]);
				}
				
			}
		}
		return list;
	}

	/**
	 * @category 保存采购设置
	 * @date 2015年7月7日
	 * @param config
	 */
	@Transactional
	public void savePurConfig(List<PurConfig> list) {
		purConfigDao.savePurConfig(list);
	}

	
	/**
	 * @category 根据Id查询采购设置信息
	 * @author 韩守松
	 * @date   2015年7月31日
	 * @param  @param Id
	 * @param  @return
	 */
	public PurConfig getPurConfigById(String Id) {
		return purConfigDao.getPurConfigById(Id);
	}
	/**
	 * 
	 *@category 设置县区配送企业数
	 *@author 邱磊
	 *@date 2015年11月19日 上午10:58:17
	 *@param 
	 *@return Pagination
	 */
	public Pagination setDelNum(List<DicAreaForm> list){
		Pagination page = new Pagination();
		if (null != list && list.size() > 0){
			for (int i = 0; i < list.size(); i++){
				DicAreaForm data = list.get(i);
				if (StringUtils.isNotBlank(data.getMaxDelnumCounty())){
					if (ValidatorUtil.isNumber(data.getMaxDelnumCounty())){
						if(!(Integer.valueOf(data.getMaxDelnumCounty()) >= 0 && Integer.valueOf(data.getMaxDelnumCounty()) < 100)){
							page.setSuccess(false);
							page.setMsg(data.getAreaName() + "县级配送企业数只能为不超过两位的整数！");
							return page;
						} 

					} else {
						page.setSuccess(false);
						page.setMsg(data.getAreaName() + "县级配送企业数只能为不超过两位的整数！");
						return page;
					}
				} else {
					data.setMaxDelnumCounty("0");
				}
				if (StringUtils.isNotBlank(data.getMaxDelnumBase())){
					if (ValidatorUtil.isNumber(data.getMaxDelnumBase())){
						if(!(Integer.valueOf(data.getMaxDelnumBase()) >= 0 && Integer.valueOf(data.getMaxDelnumBase()) < 100)){
							page.setSuccess(false);
							page.setMsg(data.getAreaName() + "基层配送企业数只能为不超过两位的整数！");
							return page;
						}
					} else {
						page.setSuccess(false);
						page.setMsg(data.getAreaName() + "基层配送企业数只能为不超过两位的整数！");
						return page;
					}
				} else {
					data.setMaxDelnumBase("0");
				}
				areaDao.updateAreaDelCount(data);
			}
		} else {
			page.setSuccess(false);
			page.setMsg("请选择要设置的配送企业数");
		}
		page.setSuccess(true);
		page.setMsg("设置成功！");
		return page;
	}
	public void setupEveryAreaDel(Pagination page){
		areaDao.setupEveryAreaDel(page);
	}
	public Map<String, Object> getBaseDelAreaByCode(String areaCode, String delCompCode){
		List<Map<String, Object>> list = purConfigDao.getBaseDelAreaByCode(areaCode, delCompCode);
		if (null != list && list.size() > 0){
			return list.get(0);
		}
		return null;
	}
}
